{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "## Exercícios\n",
    "\n",
    "1 - Aplique os algoritmos K-means [1] e AgglomerativeClustering [2] em qualquer dataset que você desejar (recomendação: iris). Compare os resultados utilizando métricas de avaliação de clusteres (completeness e homogeneity, por exemplo) [3].\n",
    "\n",
    "* [1] http://scikit-learn.org/stable/modules/clustering.html#k-means\n",
    "\n",
    "* [2] http://scikit-learn.org/0.17/modules/clustering.html#hierarchical-clustering\n",
    "\n",
    "* [3] http://scikit-learn.org/stable/modules/clustering.html#clustering-evaluation\n",
    "\n",
    "2 - Qual o valor de K (número de clusteres) você escolheu para a questão anterior? Desenvolva o Método do Cotovelo (não utilizar lib!) e descubra o K mais adequado. Após descobrir, aplique novamente o K-means com o K adequado. \n",
    "\n",
    "* Ajuda: atributos do [k-means](http://scikit-learn.org/0.17/modules/generated/sklearn.cluster.KMeans.html#sklearn.cluster.KMeans)\n",
    "\n",
    "3 - Após a questão 2, você aplicou o algoritmo com K apropriado. Refaça o cálculo das métricas de acordo com os resultados de clusters obtidos com a questão anterior e verifique se o resultado melhorou.\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "## Primeira Questão"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 181,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "from sklearn.cluster import KMeans\n",
    "from sklearn.cluster import AgglomerativeClustering\n",
    "from sklearn.decomposition import PCA\n",
    "from sklearn import datasets\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 182,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "iris = datasets.load_iris()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 183,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "X = iris.data\n",
    "y = iris.target"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 184,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 5.1,  3.5,  1.4,  0.2],\n",
       "       [ 4.9,  3. ,  1.4,  0.2],\n",
       "       [ 4.7,  3.2,  1.3,  0.2],\n",
       "       [ 4.6,  3.1,  1.5,  0.2],\n",
       "       [ 5. ,  3.6,  1.4,  0.2],\n",
       "       [ 5.4,  3.9,  1.7,  0.4],\n",
       "       [ 4.6,  3.4,  1.4,  0.3],\n",
       "       [ 5. ,  3.4,  1.5,  0.2],\n",
       "       [ 4.4,  2.9,  1.4,  0.2],\n",
       "       [ 4.9,  3.1,  1.5,  0.1],\n",
       "       [ 5.4,  3.7,  1.5,  0.2],\n",
       "       [ 4.8,  3.4,  1.6,  0.2],\n",
       "       [ 4.8,  3. ,  1.4,  0.1],\n",
       "       [ 4.3,  3. ,  1.1,  0.1],\n",
       "       [ 5.8,  4. ,  1.2,  0.2],\n",
       "       [ 5.7,  4.4,  1.5,  0.4],\n",
       "       [ 5.4,  3.9,  1.3,  0.4],\n",
       "       [ 5.1,  3.5,  1.4,  0.3],\n",
       "       [ 5.7,  3.8,  1.7,  0.3],\n",
       "       [ 5.1,  3.8,  1.5,  0.3],\n",
       "       [ 5.4,  3.4,  1.7,  0.2],\n",
       "       [ 5.1,  3.7,  1.5,  0.4],\n",
       "       [ 4.6,  3.6,  1. ,  0.2],\n",
       "       [ 5.1,  3.3,  1.7,  0.5],\n",
       "       [ 4.8,  3.4,  1.9,  0.2],\n",
       "       [ 5. ,  3. ,  1.6,  0.2],\n",
       "       [ 5. ,  3.4,  1.6,  0.4],\n",
       "       [ 5.2,  3.5,  1.5,  0.2],\n",
       "       [ 5.2,  3.4,  1.4,  0.2],\n",
       "       [ 4.7,  3.2,  1.6,  0.2],\n",
       "       [ 4.8,  3.1,  1.6,  0.2],\n",
       "       [ 5.4,  3.4,  1.5,  0.4],\n",
       "       [ 5.2,  4.1,  1.5,  0.1],\n",
       "       [ 5.5,  4.2,  1.4,  0.2],\n",
       "       [ 4.9,  3.1,  1.5,  0.1],\n",
       "       [ 5. ,  3.2,  1.2,  0.2],\n",
       "       [ 5.5,  3.5,  1.3,  0.2],\n",
       "       [ 4.9,  3.1,  1.5,  0.1],\n",
       "       [ 4.4,  3. ,  1.3,  0.2],\n",
       "       [ 5.1,  3.4,  1.5,  0.2],\n",
       "       [ 5. ,  3.5,  1.3,  0.3],\n",
       "       [ 4.5,  2.3,  1.3,  0.3],\n",
       "       [ 4.4,  3.2,  1.3,  0.2],\n",
       "       [ 5. ,  3.5,  1.6,  0.6],\n",
       "       [ 5.1,  3.8,  1.9,  0.4],\n",
       "       [ 4.8,  3. ,  1.4,  0.3],\n",
       "       [ 5.1,  3.8,  1.6,  0.2],\n",
       "       [ 4.6,  3.2,  1.4,  0.2],\n",
       "       [ 5.3,  3.7,  1.5,  0.2],\n",
       "       [ 5. ,  3.3,  1.4,  0.2],\n",
       "       [ 7. ,  3.2,  4.7,  1.4],\n",
       "       [ 6.4,  3.2,  4.5,  1.5],\n",
       "       [ 6.9,  3.1,  4.9,  1.5],\n",
       "       [ 5.5,  2.3,  4. ,  1.3],\n",
       "       [ 6.5,  2.8,  4.6,  1.5],\n",
       "       [ 5.7,  2.8,  4.5,  1.3],\n",
       "       [ 6.3,  3.3,  4.7,  1.6],\n",
       "       [ 4.9,  2.4,  3.3,  1. ],\n",
       "       [ 6.6,  2.9,  4.6,  1.3],\n",
       "       [ 5.2,  2.7,  3.9,  1.4],\n",
       "       [ 5. ,  2. ,  3.5,  1. ],\n",
       "       [ 5.9,  3. ,  4.2,  1.5],\n",
       "       [ 6. ,  2.2,  4. ,  1. ],\n",
       "       [ 6.1,  2.9,  4.7,  1.4],\n",
       "       [ 5.6,  2.9,  3.6,  1.3],\n",
       "       [ 6.7,  3.1,  4.4,  1.4],\n",
       "       [ 5.6,  3. ,  4.5,  1.5],\n",
       "       [ 5.8,  2.7,  4.1,  1. ],\n",
       "       [ 6.2,  2.2,  4.5,  1.5],\n",
       "       [ 5.6,  2.5,  3.9,  1.1],\n",
       "       [ 5.9,  3.2,  4.8,  1.8],\n",
       "       [ 6.1,  2.8,  4. ,  1.3],\n",
       "       [ 6.3,  2.5,  4.9,  1.5],\n",
       "       [ 6.1,  2.8,  4.7,  1.2],\n",
       "       [ 6.4,  2.9,  4.3,  1.3],\n",
       "       [ 6.6,  3. ,  4.4,  1.4],\n",
       "       [ 6.8,  2.8,  4.8,  1.4],\n",
       "       [ 6.7,  3. ,  5. ,  1.7],\n",
       "       [ 6. ,  2.9,  4.5,  1.5],\n",
       "       [ 5.7,  2.6,  3.5,  1. ],\n",
       "       [ 5.5,  2.4,  3.8,  1.1],\n",
       "       [ 5.5,  2.4,  3.7,  1. ],\n",
       "       [ 5.8,  2.7,  3.9,  1.2],\n",
       "       [ 6. ,  2.7,  5.1,  1.6],\n",
       "       [ 5.4,  3. ,  4.5,  1.5],\n",
       "       [ 6. ,  3.4,  4.5,  1.6],\n",
       "       [ 6.7,  3.1,  4.7,  1.5],\n",
       "       [ 6.3,  2.3,  4.4,  1.3],\n",
       "       [ 5.6,  3. ,  4.1,  1.3],\n",
       "       [ 5.5,  2.5,  4. ,  1.3],\n",
       "       [ 5.5,  2.6,  4.4,  1.2],\n",
       "       [ 6.1,  3. ,  4.6,  1.4],\n",
       "       [ 5.8,  2.6,  4. ,  1.2],\n",
       "       [ 5. ,  2.3,  3.3,  1. ],\n",
       "       [ 5.6,  2.7,  4.2,  1.3],\n",
       "       [ 5.7,  3. ,  4.2,  1.2],\n",
       "       [ 5.7,  2.9,  4.2,  1.3],\n",
       "       [ 6.2,  2.9,  4.3,  1.3],\n",
       "       [ 5.1,  2.5,  3. ,  1.1],\n",
       "       [ 5.7,  2.8,  4.1,  1.3],\n",
       "       [ 6.3,  3.3,  6. ,  2.5],\n",
       "       [ 5.8,  2.7,  5.1,  1.9],\n",
       "       [ 7.1,  3. ,  5.9,  2.1],\n",
       "       [ 6.3,  2.9,  5.6,  1.8],\n",
       "       [ 6.5,  3. ,  5.8,  2.2],\n",
       "       [ 7.6,  3. ,  6.6,  2.1],\n",
       "       [ 4.9,  2.5,  4.5,  1.7],\n",
       "       [ 7.3,  2.9,  6.3,  1.8],\n",
       "       [ 6.7,  2.5,  5.8,  1.8],\n",
       "       [ 7.2,  3.6,  6.1,  2.5],\n",
       "       [ 6.5,  3.2,  5.1,  2. ],\n",
       "       [ 6.4,  2.7,  5.3,  1.9],\n",
       "       [ 6.8,  3. ,  5.5,  2.1],\n",
       "       [ 5.7,  2.5,  5. ,  2. ],\n",
       "       [ 5.8,  2.8,  5.1,  2.4],\n",
       "       [ 6.4,  3.2,  5.3,  2.3],\n",
       "       [ 6.5,  3. ,  5.5,  1.8],\n",
       "       [ 7.7,  3.8,  6.7,  2.2],\n",
       "       [ 7.7,  2.6,  6.9,  2.3],\n",
       "       [ 6. ,  2.2,  5. ,  1.5],\n",
       "       [ 6.9,  3.2,  5.7,  2.3],\n",
       "       [ 5.6,  2.8,  4.9,  2. ],\n",
       "       [ 7.7,  2.8,  6.7,  2. ],\n",
       "       [ 6.3,  2.7,  4.9,  1.8],\n",
       "       [ 6.7,  3.3,  5.7,  2.1],\n",
       "       [ 7.2,  3.2,  6. ,  1.8],\n",
       "       [ 6.2,  2.8,  4.8,  1.8],\n",
       "       [ 6.1,  3. ,  4.9,  1.8],\n",
       "       [ 6.4,  2.8,  5.6,  2.1],\n",
       "       [ 7.2,  3. ,  5.8,  1.6],\n",
       "       [ 7.4,  2.8,  6.1,  1.9],\n",
       "       [ 7.9,  3.8,  6.4,  2. ],\n",
       "       [ 6.4,  2.8,  5.6,  2.2],\n",
       "       [ 6.3,  2.8,  5.1,  1.5],\n",
       "       [ 6.1,  2.6,  5.6,  1.4],\n",
       "       [ 7.7,  3. ,  6.1,  2.3],\n",
       "       [ 6.3,  3.4,  5.6,  2.4],\n",
       "       [ 6.4,  3.1,  5.5,  1.8],\n",
       "       [ 6. ,  3. ,  4.8,  1.8],\n",
       "       [ 6.9,  3.1,  5.4,  2.1],\n",
       "       [ 6.7,  3.1,  5.6,  2.4],\n",
       "       [ 6.9,  3.1,  5.1,  2.3],\n",
       "       [ 5.8,  2.7,  5.1,  1.9],\n",
       "       [ 6.8,  3.2,  5.9,  2.3],\n",
       "       [ 6.7,  3.3,  5.7,  2.5],\n",
       "       [ 6.7,  3. ,  5.2,  2.3],\n",
       "       [ 6.3,  2.5,  5. ,  1.9],\n",
       "       [ 6.5,  3. ,  5.2,  2. ],\n",
       "       [ 6.2,  3.4,  5.4,  2.3],\n",
       "       [ 5.9,  3. ,  5.1,  1.8]])"
      ]
     },
     "execution_count": 184,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 185,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "       0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
       "       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
       "       1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n",
       "       2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n",
       "       2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2])"
      ]
     },
     "execution_count": 185,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Realizando PCA"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 186,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "pca = PCA(n_components=2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 187,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "reduced_data = pca.fit_transform(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 188,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-2.68420713,  0.32660731],\n",
       "       [-2.71539062, -0.16955685],\n",
       "       [-2.88981954, -0.13734561],\n",
       "       [-2.7464372 , -0.31112432],\n",
       "       [-2.72859298,  0.33392456],\n",
       "       [-2.27989736,  0.74778271],\n",
       "       [-2.82089068, -0.08210451],\n",
       "       [-2.62648199,  0.17040535],\n",
       "       [-2.88795857, -0.57079803],\n",
       "       [-2.67384469, -0.1066917 ],\n",
       "       [-2.50652679,  0.65193501],\n",
       "       [-2.61314272,  0.02152063],\n",
       "       [-2.78743398, -0.22774019],\n",
       "       [-3.22520045, -0.50327991],\n",
       "       [-2.64354322,  1.1861949 ],\n",
       "       [-2.38386932,  1.34475434],\n",
       "       [-2.6225262 ,  0.81808967],\n",
       "       [-2.64832273,  0.31913667],\n",
       "       [-2.19907796,  0.87924409],\n",
       "       [-2.58734619,  0.52047364],\n",
       "       [-2.3105317 ,  0.39786782],\n",
       "       [-2.54323491,  0.44003175],\n",
       "       [-3.21585769,  0.14161557],\n",
       "       [-2.30312854,  0.10552268],\n",
       "       [-2.35617109, -0.03120959],\n",
       "       [-2.50791723, -0.13905634],\n",
       "       [-2.469056  ,  0.13788731],\n",
       "       [-2.56239095,  0.37468456],\n",
       "       [-2.63982127,  0.31929007],\n",
       "       [-2.63284791, -0.19007583],\n",
       "       [-2.58846205, -0.19739308],\n",
       "       [-2.41007734,  0.41808001],\n",
       "       [-2.64763667,  0.81998263],\n",
       "       [-2.59715948,  1.10002193],\n",
       "       [-2.67384469, -0.1066917 ],\n",
       "       [-2.86699985,  0.0771931 ],\n",
       "       [-2.62522846,  0.60680001],\n",
       "       [-2.67384469, -0.1066917 ],\n",
       "       [-2.98184266, -0.48025005],\n",
       "       [-2.59032303,  0.23605934],\n",
       "       [-2.77013891,  0.27105942],\n",
       "       [-2.85221108, -0.93286537],\n",
       "       [-2.99829644, -0.33430757],\n",
       "       [-2.4055141 ,  0.19591726],\n",
       "       [-2.20883295,  0.44269603],\n",
       "       [-2.71566519, -0.24268148],\n",
       "       [-2.53757337,  0.51036755],\n",
       "       [-2.8403213 , -0.22057634],\n",
       "       [-2.54268576,  0.58628103],\n",
       "       [-2.70391231,  0.11501085],\n",
       "       [ 1.28479459,  0.68543919],\n",
       "       [ 0.93241075,  0.31919809],\n",
       "       [ 1.46406132,  0.50418983],\n",
       "       [ 0.18096721, -0.82560394],\n",
       "       [ 1.08713449,  0.07539039],\n",
       "       [ 0.64043675, -0.41732348],\n",
       "       [ 1.09522371,  0.28389121],\n",
       "       [-0.75146714, -1.00110751],\n",
       "       [ 1.04329778,  0.22895691],\n",
       "       [-0.01019007, -0.72057487],\n",
       "       [-0.5110862 , -1.26249195],\n",
       "       [ 0.51109806, -0.10228411],\n",
       "       [ 0.26233576, -0.5478933 ],\n",
       "       [ 0.98404455, -0.12436042],\n",
       "       [-0.174864  , -0.25181557],\n",
       "       [ 0.92757294,  0.46823621],\n",
       "       [ 0.65959279, -0.35197629],\n",
       "       [ 0.23454059, -0.33192183],\n",
       "       [ 0.94236171, -0.54182226],\n",
       "       [ 0.0432464 , -0.58148945],\n",
       "       [ 1.11624072, -0.08421401],\n",
       "       [ 0.35678657, -0.06682383],\n",
       "       [ 1.29646885, -0.32756152],\n",
       "       [ 0.92050265, -0.18239036],\n",
       "       [ 0.71400821,  0.15037915],\n",
       "       [ 0.89964086,  0.32961098],\n",
       "       [ 1.33104142,  0.24466952],\n",
       "       [ 1.55739627,  0.26739258],\n",
       "       [ 0.81245555, -0.16233157],\n",
       "       [-0.30733476, -0.36508661],\n",
       "       [-0.07034289, -0.70253793],\n",
       "       [-0.19188449, -0.67749054],\n",
       "       [ 0.13499495, -0.31170964],\n",
       "       [ 1.37873698, -0.42120514],\n",
       "       [ 0.58727485, -0.48328427],\n",
       "       [ 0.8072055 ,  0.19505396],\n",
       "       [ 1.22042897,  0.40803534],\n",
       "       [ 0.81286779, -0.370679  ],\n",
       "       [ 0.24519516, -0.26672804],\n",
       "       [ 0.16451343, -0.67966147],\n",
       "       [ 0.46303099, -0.66952655],\n",
       "       [ 0.89016045, -0.03381244],\n",
       "       [ 0.22887905, -0.40225762],\n",
       "       [-0.70708128, -1.00842476],\n",
       "       [ 0.35553304, -0.50321849],\n",
       "       [ 0.33112695, -0.21118014],\n",
       "       [ 0.37523823, -0.29162202],\n",
       "       [ 0.64169028,  0.01907118],\n",
       "       [-0.90846333, -0.75156873],\n",
       "       [ 0.29780791, -0.34701652],\n",
       "       [ 2.53172698, -0.01184224],\n",
       "       [ 1.41407223, -0.57492506],\n",
       "       [ 2.61648461,  0.34193529],\n",
       "       [ 1.97081495, -0.18112569],\n",
       "       [ 2.34975798, -0.04188255],\n",
       "       [ 3.39687992,  0.54716805],\n",
       "       [ 0.51938325, -1.19135169],\n",
       "       [ 2.9320051 ,  0.35237701],\n",
       "       [ 2.31967279, -0.24554817],\n",
       "       [ 2.91813423,  0.78038063],\n",
       "       [ 1.66193495,  0.2420384 ],\n",
       "       [ 1.80234045, -0.21615461],\n",
       "       [ 2.16537886,  0.21528028],\n",
       "       [ 1.34459422, -0.77641543],\n",
       "       [ 1.5852673 , -0.53930705],\n",
       "       [ 1.90474358,  0.11881899],\n",
       "       [ 1.94924878,  0.04073026],\n",
       "       [ 3.48876538,  1.17154454],\n",
       "       [ 3.79468686,  0.25326557],\n",
       "       [ 1.29832982, -0.76101394],\n",
       "       [ 2.42816726,  0.37678197],\n",
       "       [ 1.19809737, -0.60557896],\n",
       "       [ 3.49926548,  0.45677347],\n",
       "       [ 1.38766825, -0.20403099],\n",
       "       [ 2.27585365,  0.33338653],\n",
       "       [ 2.61419383,  0.55836695],\n",
       "       [ 1.25762518, -0.179137  ],\n",
       "       [ 1.29066965, -0.11642525],\n",
       "       [ 2.12285398, -0.21085488],\n",
       "       [ 2.3875644 ,  0.46251925],\n",
       "       [ 2.84096093,  0.37274259],\n",
       "       [ 3.2323429 ,  1.37052404],\n",
       "       [ 2.15873837, -0.21832553],\n",
       "       [ 1.4431026 , -0.14380129],\n",
       "       [ 1.77964011, -0.50146479],\n",
       "       [ 3.07652162,  0.68576444],\n",
       "       [ 2.14498686,  0.13890661],\n",
       "       [ 1.90486293,  0.04804751],\n",
       "       [ 1.16885347, -0.1645025 ],\n",
       "       [ 2.10765373,  0.37148225],\n",
       "       [ 2.31430339,  0.18260885],\n",
       "       [ 1.92245088,  0.40927118],\n",
       "       [ 1.41407223, -0.57492506],\n",
       "       [ 2.56332271,  0.2759745 ],\n",
       "       [ 2.41939122,  0.30350394],\n",
       "       [ 1.94401705,  0.18741522],\n",
       "       [ 1.52566363, -0.37502085],\n",
       "       [ 1.76404594,  0.07851919],\n",
       "       [ 1.90162908,  0.11587675],\n",
       "       [ 1.38966613, -0.28288671]])"
      ]
     },
     "execution_count": 188,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "reduced_data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 189,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nQFb8jTEmA/0/vKLErMpELogAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2377b703518>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(reduced_data[:,0],reduced_data[:,1], c = y)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Analisando os dados utilizando KMeans"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 190,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "KMeans(algorithm='auto', copy_x=True, init='k-means++', max_iter=300,\n",
       "    n_clusters=3, n_init=10, n_jobs=1, precompute_distances='auto',\n",
       "    random_state=None, tol=0.0001, verbose=0)"
      ]
     },
     "execution_count": 190,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "kmeans = KMeans(n_clusters=3)\n",
    "kmeans.fit(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 191,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "prediction = kmeans.predict(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 192,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "       0, 0, 0, 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
       "       1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
       "       1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1, 1,\n",
       "       2, 2, 2, 2, 1, 2, 1, 2, 1, 2, 2, 1, 1, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2,\n",
       "       1, 2, 2, 2, 1, 2, 2, 2, 1, 2, 2, 1])"
      ]
     },
     "execution_count": 192,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "prediction"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 193,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from sklearn import metrics"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 194,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "completeness_score = metrics.completeness_score(y, prediction)\n",
    "homogenity_score = metrics.homogeneity_score(y, prediction)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 195,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "completude: 0.764986151449\n",
      "homogeneidade: 0.751485402199\n"
     ]
    }
   ],
   "source": [
    "print('completude: ' + str(completeness_score))\n",
    "print('homogeneidade: ' + str(homogenity_score))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Analisando os dados utilizando AgglomerativeClustering"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 196,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "aClustering = AgglomerativeClustering(n_clusters=3)\n",
    "prediction2 = aClustering.fit_predict(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 197,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
       "       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
       "       1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "       0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "       0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0,\n",
       "       2, 2, 2, 2, 0, 2, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2,\n",
       "       0, 2, 2, 2, 0, 2, 2, 2, 0, 2, 2, 0], dtype=int64)"
      ]
     },
     "execution_count": 197,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "prediction2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 198,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "completeness_score2 = metrics.completeness_score(y, prediction2)\n",
    "homogenity_score2 = metrics.homogeneity_score(y, prediction2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 199,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "completude: 0.779595800559\n",
      "homogeneidade: 0.760800846972\n"
     ]
    }
   ],
   "source": [
    "print('completude: ' + str(completeness_score2))\n",
    "print('homogeneidade: ' + str(homogenity_score2))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Segunda Questão"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Implementando o método do cotovelo"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 200,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.10666666666666667"
      ]
     },
     "execution_count": 200,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "metrics.mean_squared_error(y, prediction)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 201,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def elbow(limit):\n",
    "    error_vec = []\n",
    "    for i in range(1,limit):\n",
    "        kmeans = KMeans(n_clusters=i)\n",
    "        kmeans.fit(X)\n",
    "        pred = kmeans.predict(X)\n",
    "        error = metrics.mean_squared_error(y,pred)\n",
    "        error_vec.append(error)\n",
    "    \n",
    "    return error_vec.index(min(error_vec))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 202,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1"
      ]
     },
     "execution_count": 202,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "elbow(20)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Agora rodamos o KMeans usando o numero otimo de clusteres"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 211,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "completude: 0.883514234919\n",
      "homogeneidade: 0.522322464101\n"
     ]
    }
   ],
   "source": [
    "kmeans = KMeans(n_clusters=2)\n",
    "kmeans.fit(X)\n",
    "prediction = kmeans.predict(X)\n",
    "completeness_score = metrics.completeness_score(y, prediction)\n",
    "homogenity_score = metrics.homogeneity_score(y, prediction)\n",
    "print('completude: ' + str(completeness_score))\n",
    "print('homogeneidade: ' + str(homogenity_score))"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
